package br.com.vfsb.arquivo;

import java.io.File;
import java.util.List;

import br.com.vfsb.dao.CompraLocalBiDAO;
import br.com.vfsb.dao.ComprasLocaisBiDAO;
import br.com.vfsb.dao.InfArquivoBiDAO;
import br.com.vfsb.dao.ProdutoBiDAO;
import br.com.vfsb.entity.InfArquivoBI;
import br.com.vfsb.entity.ProdutoBI;
import br.com.vfsb.entity.VendaLocal;
import br.com.vfsb.entity.VendasLocais;
import br.com.vfsb.util.UtilMsg;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class LeituraXMLBI {

	public void leituraBI() {

		XStream x = new XStream(new DomDriver("ISO-8859-1"));
		x.processAnnotations(ArquivoBI.class);

		try {
			// carrega o arquivo XML
			File f = new File("\\arquivo\\bi.xml");
			// FileInputStream input = new FileInputStream(f);
			// cria um objeto de Arquivo,
			// contendo os dados lidos no xml
			System.out.println(f.getPath());
			ArquivoBI arq = (ArquivoBI) x.fromXML(f);
			// imprime os dados

			InfArquivoBI a = new InfArquivoBI();

			InfArquivoBiDAO adao = new InfArquivoBiDAO();

			a.setVersao(arq.getInfArquivo().getVersao());
			a.setInscEstadual(arq.getInfArquivo().getInscEstadual());
			a.setAno(arq.getInfArquivo().getAno());
			a.setBimestre(arq.getInfArquivo().getBimestre());
			a.setICMS(arq.getInfArquivo().getICMS());
			a.setProdDeclarados(arq.getInfArquivo().getProdDeclarados());
			adao.salvar(a);

			ProdutoBI prod = new ProdutoBI();
			ProdutoBiDAO dao = new ProdutoBiDAO();
			VendaLocal clo = new VendaLocal();
			CompraLocalBiDAO cldao = new CompraLocalBiDAO();
			VendasLocais locais = new VendasLocais();
			ComprasLocaisBiDAO locaisdao = new ComprasLocaisBiDAO();

			for (br.com.vfsb.arquivo.ProdutoBI p : arq.getInfArquivo()
					.getListaProdutos().produtos) {
				System.out.println(p.getCodigo() + " | " + p.getDescricao()
						+ " | " + p.getNCM());

				prod.setCodigo(p.getCodigo());
				prod.setDescricao(p.getDescricao());
				prod.setNCM(p.getNCM());
				prod.setOrdem(p.getOrdem());
				prod.setQtdEstFinal(p.getQtdEstFinal());
				prod.setQtdEstInicial(p.getQtdEstInicial());
				prod.setQtdProdLocal(p.getQtdProdLocal());
				// a.setCodigo_abf(1);
				prod.setInfArquivo(a);

				dao.salvar(prod);

				locais.setQtd(p.getVendasLocais().getQtd());
				locais.setValor(p.getVendasLocais().getValor());
				locais.setProduto(prod);
				
				locaisdao.salvar(locais);

				for (br.com.vfsb.arquivo.VendaLocal cl : p.getVendasLocais()
						.getListaVendasLocais().vendasLocais) {
					System.out.println(cl.getChaveNFe() + " | "
							+ cl.getInscEstadual());

					clo.setChaveNFe(cl.getChaveNFe());
					clo.setInscEstadual(cl.getInscEstadual());
					clo.setQtdVenda(cl.getQtdVenda());
					clo.setValorVenda(cl.getValorVenda());
					// fk_codigo_locais
					clo.setVendasLocais(locais);
					cldao.salvar(clo);

				}
			}

			// } catch (FileNotFoundException e) {
			// e.printStackTrace();
		} catch (Exception e) {
			UtilMsg.Msg("Arquivo Invalido");
		}

	}

	public void limparBI() {

		InfArquivoBiDAO dao = new InfArquivoBiDAO();
		List<InfArquivoBI> arquivos = dao.listar();
		for (InfArquivoBI arq : arquivos) {
			dao.excluir(arq);
		}
	}

}
